# 作业：
# 1、写函数,将传入的列表或元祖对象的奇数位索引对应的元素

# def jishu(list):
#     lens = len(list)
#     print(lens)
#     for i in range(0,lens,2):
#         print(list[i])
#
#
# a = [21, 5, 2, 4, 98, 442, 24545, 774, 154, 45, 57, 1256, 7]
# jishu(a)

# 2、写函数,判断用户传入的对象(string,list,tuple)长度是否大于5

# def lens(obj):
#     lens2 = len(obj)
#     if lens2 > 5:
#         print("当前输入参数大于五")
#     else:
#         print("当前参数小于五")
#
#
# a = "asjkhtdfrgcwelimo"
# b = [1, 2, "tkjrdgy", 564, 456, 4856, 213, 468, 456, 74856, 453]
# c = (1, 11, 1)
#
# lens(a)
# lens(b)
# lens(c)

# 3、写函数,计算传入的string中,数字,字母,空格以及其它内容的个数,并返回结果

# def calc(string):
#     number = 0  # 记录数字个数
#     letter = 0  # 记录字母个数
#     blank = 0  # 记录空格个数
#     other = 0  # 记录其他字符个数
#     for c in string:
#         if c.isdigit():  # 判断是否为数字
#             number += 1
#         elif c == ' ':  # 判断是否为空格
#             blank += 1
#         elif c.isalpha():  # 判断是否为字母
#             letter += 1
#         else:
#             other += 1
#     print('数字个数:', number, '字母个数:', letter, '空格个数:', blank, '其他字符个数:', other)
#     return number, letter, blank, other
#
# string = input("输入一个字符串：")
# calc(string)

# 4、写函数,接收两个数字参数,返回较大的那个数字

# def mas(a,b):
#     m = [a,b]
#     print(max(m))
#
# mas(5,99)

# 5、编写一个函数 cacluate, 可以接收任意多个数,返回的是一个元组.

# def cacluate(*s):
#     a = [*s]
#     b = tuple(a)
#     return b
#
# print(cacluate(1, 2, 45, 4, 54, 5, 1, 5, 4, 1, 8, 4, 1, 57, 8, 54, 1))

# 6、编写一个函数, 接收字符串参数, 返回一个元组,元组的第一个值为大写字母的个数, 第二个值为小写字母个数.

# def strUtil(string):
#     uppercase = 0
#     lowercase = 0
#     strLen = len(string)
#     num = 0
#     lists = list(string)
#     while num < strLen:
#         s = lists[num]
#         if s.isupper():
#             uppercase+=1
#         elif s.islower():
#             lowercase+=1
#         num += 1
#
#     a = list()
#     a.append(uppercase)
#     a.append(lowercase)
#     a.append(lists)
#     return tuple(a)
#
# print(strUtil("uiyawetrweiuoch56roweqoDRBTYn"))


# 7、编写函数, 接收一个列表(包含30个1~100之间的随机整形数)和一个整形数k, 返回一个新列表.
# 函数需求:
# 将列表下标k之前对应(不包含k)的元素逆序;
# 将下标k及之后的元素逆序;

# import random
#
# def randomNumberUtli():
#     return random.sample(range(1,101),30)
#
# def listUtil(randomNumber,ints):
#     list1 = list(randomNumber)
#     list1.append(ints)
#     list1.sort()
#     a = list1.index(ints)
#
#     num = 0
#     list2 = list()
#     while num < a:
#         list2.append(list1[num])
#         num += 1
#
#     list3 = list()
#     b = a + 1
#     while b < len(list1):
#         list3.append(list1[b])
#         b += 1
#
#     lists = list()
#     list2.reverse()
#     list2.append(ints)
#     list3.reverse()
#     list2.extend(list3)
#     lists.append(list2)
#     return lists
#
# print(listUtil(randomNumberUtli(),50))

# 8、编写函数，从键盘输入参数x和n，计算并显示形如x+xx +xxx + xxxx + xxxxx+xxx…xxx+ 的表达式前n项的值

# def calculate(x, n):
#     s = 0
#     for i in range(1,n+1):
#         s += int(str(x)*i)
#     return s
#
# print(calculate(int(input("x:")), int(input("n:"))))

# 9、写函数,函数接收的4个参数分别是:姓名,性别(默认为男),年龄,地址

# def info(name,age,address):
#     print(f"name:{name},sex:不锈钢铁人,age:{age},address:{address}")
#
#
# info("姚青",999,"吉林省-吉林市-桦甸市")

def execute1():
    print("execute1开始执行了")
    execute2()
    print("execute2执行结束了")
def execute2():
    print("execute2开始执行了")
    print("execute2执行结束了")
execute1()


# 10、写函数,接收n个数字,返回这些数字的和(动态传参)

# def qiuhe(*s):
#     a = [*s]
#     return sum(a)
#
#
# print(qiuhe(88, 89, 99))

# 11、在实参中传入多个可迭代对象(要有string,list,tuple,set,dict),将每个对象的每个元素都加到args或kwargs里


# 12、写函数,把传过来的列表中的每一个元素都用"_"拼接,并返回

# def listUtli(lists):
#     num = 0
#     s = ''
#     x = len(lists)
#     while num < x:
#         if num == x - 1:
#             s += lists[num]
#         elif num < x:
#             s += lists[num] + "_"
#         num += 1
#     return s
#
# a = ["as","123","try","wrt","45"]
# print(listUtli(a))

# 13、写函数,传入一个数字,返回这个数的阶乘。示例：1x2x3....

# def cal_one(n):
#     num = 1
#     for i in range(1,n+1):
#         num *= i
#     return num
#
# print(cal_one(5))

# 14、写函数,返回一个扑克牌列表,里面有52项,每一项都是一个tuple

# def list_poker():
#
#     # 将全部牌存储成一个元组
#     all_num = []
#     for i in range(1,14):
#         for j in range(1,5):
#             if i == 1:
#                 i = "A"
#                 all_num.append(i)
#             elif i == 11:
#                 i = "J"
#                 all_num.append(i)
#             elif i == 12:
#                 i = "Q"
#                 all_num.append(i)
#             elif i == 13:
#                 i = "K"
#                 all_num.append(i)
#             else:
#                 all_num.append(i)
#     print(all_num)
#
# # 再写一个颜色的列表
#     coul=["红心","草花","方块","黑桃"]
#     all_coul =[]
#     j = 0
#
#     # 根据牌组数量生成花色
#     for j in range(1,14):
#         for i in coul:
#             all_coul.append(i)
#     print(all_coul)
#
#     # 用 zip 对象将牌组组合拆分
#     all_list = list(zip(all_coul,all_num))
#     print(all_list)
#     return all_list
#
# list_poker()

# 15、编写函数，求1+2+3+…N的和

# def summation(n):
#     if n == 1:
#         return 1
#     return n + summation(n - 1)
#
#
# print(summation(5))


# def sumT(n):
#     a = n * (1 + n) / 2
#     return a
#
# print(sumT(10))

# 16、编写一个函数，求多个数中的最大值

# def maxs(*s):
#     a = [*s]
#     return max(a)
#
# print(max(1,89,153,846,123,574,12,78,12,45,12,748))

# 17、编写一个函数，提取指定字符串中所有的字母，然后拼接在一起产生一个新的字符串

# import re
# def strUtil(strS):
#     return ''.join(re.findall(r'[A-Za-z]', strS))
#
# print(strUtil("wyetrciokwqe45dsrt"))

# def tiquzimu(x):
#     z=''
#     for y in x:
#         if y.isalpha():
#             z += y
#     return z
#
# a="10086abcD@#$"
# print(tiquzimu(a))

# 18、写一个函数，求多个数的平均值

# def avgs(*s):
#     a = [*s]
#     return sum(a) / len(a)
#
# print(avgs(1,2,3))

# 19、写一个自己的len函数，统计指定序列中元素的个数

# def lens(lists):
#     return len(lists)
#
# a = [1,5,1,5,2,4856]
# b = [12,456,485,1263,456]
#
# print(lens(a))

# 20、找出传入的列表或元组的奇数位对应的元素，并返回一个新的列表

# def sequence(lists):
#     newList = lists[::2]
#     return newList
#
# lists = [1, 2, 3, 4, 5]
# print(sequence(lists))

# 21、水仙花数：个位、十位、百位的立方加在一起等于数的本身

# 22、 定义函数，有一个形参，传入的是列表，数组大小不超过 100个，
# 数组中的每个元素值不允许超过 100，但是可以等于100，
# 如果列表大小超过了100个截取到第100个为止，要求返回的列表格式：
# 删除所有重复元素，使得每个元素只出现一次
# 按照数字的大小，由高到低排序返回

# def ErShiEr(a):
#     lists = list()
#     if type(a) == list:
#         if len(a) > 100:
#             print("输入的列表超过100",len(a))
#             a = a[0:100]
#             print(len(a))
#             a=list(set(a))
#             sorted_list = sorted(a, reverse=True)
#             for c in sorted_list:
#                 if c <= 100:
#                     lists.append(c)
#     else:
#         print("输入必须是列表")
#     return lists

# f = [456,468,390,392,518,67,81,470,491,54,426,113,11,19,30,44,210,25,147,194,575,286,198,19,440,282,230,218,246,520,187,423,302,444,597,109,261,480,537,536,206,305,359,256,27,566,132,96,520,184,370,224,193,92,79,327,577,259,286,38,600,569,222,574,13,547,67,84,328,140,457,509,491,525,361,329,112,437,511,89,152,214,240,167,329,85,596,563,570,429,84,316,557,303,290,11,83,449,566,342,373,571,141,535,259,559,44,139,505,36,80,53,391,48,16,488,4,551,490,544,25,412,185,592,552,287,62,300,548,258,182,311,562,61,3,335,373,134,247,13,23,151,168,293,384,80,177,241,527,258,132,28,86,400,369,359,96,118,506,126,449,133,414,83,415,530,259,215,256,481,305,372,226,321,376,592,422,210,530,62,290,470,308,575,94,189,336,557,46,479,417,531]
#
# result = ErShiEr(f)
# print(result)

# 23、定义函数 getLength，打印用户传入的容器类型和数据长度

# def getLength(obj):
#     print(type(obj))
#     print(len(obj))
#
# print(getLength("asdfghjkg"))

# # 24、定义函数 generateNum( )
#
# def generateNum():
#     print("aaa")

# 25、定义函数 moreThan(num)，判断输入的数字是否大于1500

# def moreThan(num):
#     if num <= 1500:
#         print("num小于等于1500")
#     else:
#         print("num大于等于1500")
#
# moreThan(8687)

# 26、定义函数，有两个形参，第一个形参到第二个形参的范围，所有平方数之和

# def pfs(x,y):
#     a = list(range(x,y))
#     num = 0
#     b = list()
#     while num < len(a):
#         c = a[num] **2
#         b.append(c)
#         num += 1
#
#     print(a)
#     print(b)
#     return sum(b)
#
# print(pfs(2,9))

# 27、写函数，检查传入字典的每一个value长度，如果大于2，那么仅保留前两个长度的内容， 并将新内容返回给调用者

# def adict(dicparms):
#
#     result = {}
#     # dicparms.items()；列出字典全部键值对
#     for key,value in dicparms.items():
#         if len(value) > 2:
#             result[key] = value[:2]
#             pass
#         else:
#             result[key] = value
#             pass
#     return result
#
# test = {'字符串或列表':'strlist','name':'leo','age':'eighteen'}
#
# print(adict(test))

# 28、写函数，判断用户传入的对象（字符串、列表、元组）的元素是否为空

# def fun1(n):
#     if len(n) != 0:
#         return "对象不为空"
#     else:
#         return "对象为空"
#
# print(fun1([1]))

# 29、编写自定义函数，完成一个简单的减法运算函数

# def jian(x,y):
#
#     return x-y
#
# print(jian(9,3))

# 30、编写自定义函数，可以输出自己的名字即可。

# def names(name):
#     return name
#
#
# names(input("请输入您的姓名："))

# 31、编写自定义函数：剪刀石头布
# 游戏开始，初始状态下用户和电脑都有 100 分，赢一局+10 分，输一局-10 分。
#
#  当用户为 0 分时，游戏结束，提示游戏结束，比赛输了
#
# 当用户为 200 分时，游戏结束，提示游戏结束，赢得比赛、每轮比赛都输出当前的分数
#
# 1 代表剪刀 2 代表石头 3 代表布
# 32、编写一个函数，接受一个字符串作为参数，并返回该字符串的逆序字符串

# def strUtikl(string):
#     lists = list(string)
#     lists.reverse()
#     s = "".join(lists)
#     return s
#
# print(strUtikl("abc"))

# 33、编写一个函数，接受一个数字列表作为参数，并返回其中所有偶数的列表

# def intUtil(i):


# 34、编写一个函数，接受一个字符串列表作为参数，并返回其中最长的字符串。

# def strLen(lists):
#     return max(lists, key=len, default='')
#
# lists = ['我是', '我是一棵', '我是一棵大树']
#
# print(strLen(lists))

# 35、编写一个函数，接受一个数字列表作为参数，并返回其中所有数字的平方的总和
# 36、编写一个函数，接受一个字符串作为参数，并返回其中所有单词的首字母的大写形式
# 37、编写一个函数，接受两个列表作为参数，并返回两个列表的交集
# 举例：
# list1 = [100,200,300,454]
# list2 = [454,789,125,46]
# 返回：[454]
#  38、定义一个学生注册函数enroll()，打印学生姓名，性别，年龄，城市

# def enroll(name,sex,age,address):
#     return f"name:{name},sex:{sex},age:{age},address:{address}"
#
# print(enroll("姚青","男",999,"qwreyituuihowqerguiho"))
